#ifndef PHP_EVILWORLDS
#define PHP_EVILWORLDS

#define PHP_EVILWORLDS_VERSION  "1.0"
#define PHP_EVILWORLDS_EXTNAME  "evilworlds"
#define EVILWORLDS_NS           "Evilworlds"
#define EVILWORLDS_CONFIG       "Evilworlds\\Config"
#define EVILWORLDS_SESSION      "Evilworlds\\Session\\Model"

extern "C" {
	#ifdef HAVE_CONFIG_H
		#include "config.h"
	#endif
	#include "php.h"
}

#include <unordered_map>
#include "zend_API.h"

extern "C" {
	#include "ext/standard/html.h"
	#include "ext/standard/php_var.h"
	#include "ext/igbinary/igbinary.h"
}

#include "zend_interfaces.h"
#include "zend_modules.h"
#include "zend_exceptions.h"
#include "ext/standard/info.h"

#include "common_functions.hpp"
#include "evilworlds_api.hpp"
#include "Preprocessor.hpp"
#include "Url.hpp"
#include "Mysql.hpp"
#include "Registry.hpp"
#include "Profiler.hpp"

#ifdef ZTS
	#define E_SG(v) TSRMG(evilworlds_globals_id, zend_evilworlds_globals *, v)
#else
	#define E_SG(v) (evilworlds_globals.v)
#endif

PHP_FUNCTION(array_var); 

PHP_MINIT_FUNCTION(evilworlds); 
PHP_MSHUTDOWN_FUNCTION(evilworlds); 
PHP_RINIT_FUNCTION(evilworlds); 
PHP_RSHUTDOWN_FUNCTION(evilworlds); 
PHP_MINFO_FUNCTION(evilworlds); 

hash<string> hasher; 
extern zend_module_entry evilworlds_module_entry; 


#endif // PHP_EVILWORLDS
